{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2722782acf8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "np.random.seed(1)\n",
    "classifier_weight = np.random.random(1)\n",
    "\n",
    "margin = 0.1\n",
    "positive_data = np.random.random([200,2])\n",
    "positive_data[:,0] -= 1+margin\n",
    "negative_data = np.random.random([200,2])\n",
    "negative_data[:,0] += margin\n",
    "negative_data[:,1] -= 0.2\n",
    "\n",
    "theta = np.arctan(1/classifier_weight)\n",
    "rot_mat = np.asarray([[np.cos(theta), -np.sin(theta)],\n",
    "                     [np.sin(theta), np.cos(theta)]]).reshape([2,2])\n",
    "positive_data = np.matmul(positive_data,rot_mat)\n",
    "negative_data = np.matmul(negative_data,rot_mat)\n",
    "\n",
    "num_tgt_data = 50\n",
    "scale = 0.25\n",
    "\n",
    "tgt_data_tem_a = np.random.random([num_tgt_data//2,2])*scale\n",
    "tgt_data_tem_a[:,0] -= scale+margin\n",
    "tgt_data_tem_b = np.random.random([num_tgt_data//2,2])*scale\n",
    "tgt_data_tem_b[:,0] -= scale\n",
    "tgt_data_tem_b[:,1] -= 0.3\n",
    "tgt_positive_data = np.concatenate([tgt_data_tem_a, tgt_data_tem_b])\n",
    "tgt_positive_data = np.matmul(tgt_positive_data,rot_mat)\n",
    "\n",
    "tgt_data_tem_a = np.random.random([num_tgt_data//2,2])*scale\n",
    "tgt_data_tem_a[:,0] += margin\n",
    "tgt_data_tem_a[:,1] -= 0.1\n",
    "tgt_data_tem_b = np.random.random([num_tgt_data//2,2])*scale\n",
    "tgt_data_tem_b[:,1] -= 0.4\n",
    "tgt_negative_data = np.concatenate([tgt_data_tem_a, tgt_data_tem_b])\n",
    "tgt_negative_data = np.matmul(tgt_negative_data,rot_mat)\n",
    "\n",
    "positive_plt = plt.scatter(positive_data[:,0],positive_data[:,1],\n",
    "                           color='#d4d4d4',marker='o',linestyle='None')\n",
    "negative_plt = plt.scatter(negative_data[:,0],negative_data[:,1],\n",
    "                           color='#d4d4d4',marker='x',linestyle='None')\n",
    "tgt_positive_plt = plt.scatter(tgt_positive_data[:,0],tgt_positive_data[:,1],marker='o')\n",
    "tgt_negative_plt = plt.scatter(tgt_negative_data[:,0],tgt_negative_data[:,1],marker='x')\n",
    "\n",
    "x_line = np.asarray(range(16))/10-0.4\n",
    "y_line = x_line * classifier_weight\n",
    "plt.plot(x_line,y_line,'g-')\n",
    "\n",
    "plt.legend(\n",
    "    (positive_plt, negative_plt, tgt_positive_plt, tgt_negative_plt),\n",
    "    ('Source ID 1', 'Source ID 2', 'Target ID 1', 'Target ID 2'),\n",
    "    loc='lower right',\n",
    "    ncol=2,\n",
    "    fontsize=8,\n",
    ")\n",
    "title = plt.title('Real labels of target data')\n",
    "# axis_range = plt.axis('off')\n",
    "# plt.savefig('real.pdf',format='pdf')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\h5py\\__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n",
      "  from ._conv import register_converters as _register_converters\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Computing source distance...\n",
      "Computing original distance...\n",
      "Starting re_ranking...\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAEHCAYAAACtAv3IAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzsvXl8XMd9J/itboA4miQaIHERMgU0RVEkQMsCQWlieWLLIk2fG8empI0TH7EjkNp1YmdnbYpKdmx5bVG0drz2xBmLtL07STbJh5LstWYmtjSkfMXOhjJJOTHBAxJB6gABAgTQINi4Gt21f7xXr+tV17tfX2B9Px9+iH79jnrV733rV9/fUYRSCgUFBQWF5Y9IqRugoKCgoFAcKMJXUFBQuEGgCF9BQUHhBoEifAUFBYUbBIrwFRRKAELIbkJIvMRt6CWEfL6UbSh3EELihJCnS92OsKAI3wKEkClCyElCyFH9/4MFuMYFry+9/gBeCLqPn30dztOr99PJoOcqNPz0ewGQoJQmS9yGb1NKv1riNpQ19N/oyHIZGBXh2+NeSulOSuk2ACgE6S8jHITWX9vELwgh/YW+eNjXKEKbA5G9PsBOBTh+N4Ajku39hbh3fUazQ/+/N+zzh3F93fjp1/cz+oBS+gyAB4rW2AJCEb57HAFQ9Ae1gmBnse4pwvXDvkbB2qyT7bGApxkCcCLA8XtkbaCUHgawL8B580AISQDYSSk9ppPn/jDPH+L1n6aUHqaUHgOwU/huqBQDVdhQhO8e+wEcJYQkdJnnApMvCCGf1z8f1a0Ek0zCSwiEkIP656cBNHH79DNJhBCyw22jCCFPc9ITL1M0EUIO6dc6xO1vaqtwrrx7k1wvr536zCcha7t+bSb3HLRqs95nJ/X+eVrS1qfZtFrS33nXkLTbqt9lbXHVZuH8Rxkh6P3O2tor0YATlNIhuz51gR0AgmjLfZTSUxbfPePlGXSBHRBmNEUmT8fr6/dr7EMpvU84x5B+nsoGpVT9k/wDMAXgJPfv8/r2gwB263/HoVn9T+ufEwAO6dsvcOe6oG/bAeCkcA12jqPc9pMA4hbtMp2b274bwEFunyl2Dv18O5zaKt6b5BqW7WT3aNHmvPZatJly/Rxn14JGbL1cG0z3YHcN/Ttpv1u1xW2bhe39XNsPcW38POtTfl83fSq5RkK/Ti+Ao9AGDt/Pt813Cdb+kN6lz7O+4fpnt8MxvXpf73baN4zr6/36tP6s5F1T/z7vd6+0f1VQsMO9NF+mOArgaULIdmgPzgPQrNujLs63Uz+GYVL//wFh+xEA9wM47HRC3TLZA+0lHeK+muTafgi5KapdW8V7E+/ddztdtjlJc05E/rujAPoAnIK3/maw6ne7trhtM8MxAIcIIYeh9VtC3/4AgHu584hyjpc+PUQp3amfp4lSOqTLFUf1e5yENmDsoZQe02cZQ1STMURMSrYxxKHNcOLi86/Pbu63OfYY5WYvfqBfYz/VrWx9tvmM8H3YbYgDANXkHDZjO8WdZxJAnn+q0qAI3yP0F2kbNCvgJLQX8wD/Usmm/A4Q918DF049fVq6D8B90AjGThud0M9r2VbJvTWG0U4PbTZIiFJ6ihDSp3/cBjMpHrAgMU9w239u9uPIdwc0AmaDBATSTAhtd9Wn+kAxpP8dZ3/r1x1ixEQISSKn7R+j1rJNk2wjJ+UcgmTg0e/F0wAP7X5MciNsBldo1vQhvT29EAYnH21wc/0haH3PH9PL7deEgI72coDS8D2CEJKglA7plugJAD8C5+AjhPTyL7j+cjJr7yg00hC3P83OoW9369TrA3BKv16f8B3/Qt+nn++I2Fa7e5MMXH7bmdS19rhDm/m2MD39KDR5hRGX1T3w1xBh1e92bfHcZugzEN1KPKq308mx6rZPmSUPaER8VB9gDOhkfQKa/6bXhuwBiYWvH5/Q238YEsc1yUWyWP1LiMcAeArABu5z3KFtrA8BbQZk8sv4aIOb6x9D7rmA/je/Txya0VTRUBa+d+wghOyB9gAco5T+lBByK8k5OQ9Be1CG9G0nkLPGjhFC7iOaQ/cYdItB396rb08C2OdySvoUAOboy9tfdz72gbP0mPORayt/nHhvJosmQDuPQZsxHINmKVu2WQAj8z5CyAZK6R7d8hfv4ZRwDRNRWfU77PvPT5uPQLf+9WsyqQWAQaimmYmHPn0G2u/D+iSOnNWa1EluCJovJQF7yQbQnk/DeUxykSz79HYlCSGmfdh2eLTw9XM9zc0eDALXf8cHueeTDfQ79Pv7FUf+vtrg4vr36vscIblwzAPC77AdwAG31yxXEN0hoaBQViBadMwFSulhnQQOQnNuBpZySgVCyOdpARKd9IH9pN5X/QC2UUptw0p1iShRiPZ4BT8bKad28SCEnKSSHJNKg5J0FMoZk4Bh0SVhoTsrgM1cAM3KdwzXpGWSTEQI2SHIK9shzIJKDWKRpFaJUBa+QtmCaPHrTFc9xuSGSoQuxSSDRrCECb1ND1RyvxYabHbpNGOqFCjCV1BQULhBoCQdBQUFhRsEivAVFBQUbhAowldQUFC4QaAIX0FBQeEGQVklXq1du5Z2dnaWuhkKCgoKFYOTJ09epZQ2u9m3rAi/s7MTJ04EKfGtoKCgcGOBEPKq232VpKOgoKBwg0ARvoKCgsINAkX4CgoKCjcIFOErKCgo3CBQhK+goKBwg0ARvoKCgsINgrIKy1RQUMhHMpnE2NgY0uk0qqur0dLSgnjc6yqaCgqK8BUUDJQjsSaTSVy+fBmsqm06ncbly5cBoORtU6g8KElHQQE5Yk2n0wByxJpMlnbd6rGxMYglzCmlGBsbK1GLFCoZysJXuCEhWvOZTMaSWEtpSbMByO12BQU7KMJXuOEgk0msUGpira6ulrahurq6BK1RqHQoSUfhhoNMJrFCqYm1paUFhBDTNkIIWlpaStQihUqGsvAVbgjwEo5blIpYRbmpoaEBqVSqrJzJCpUJRfgKyx6ihGOFaDSKSCRSNGKVRQUByJObpqensW7dOkXyCoGhCF+hqChF6KMbCYcQgra2tqKRqlW4JSFE6jweHR1VhK8QGErDVygaShX66CTjVFdXF92Ctgq3zGaz0v0zmUzJQ0QVKh/KwlcoGuxiygtJtnaRLrfeemvBrmsHP9E/pQ4RVah8KAtfoWgoVUx5OUa6WEX/RKNRy2NKHSKqUPlQhK9QFNjJEYUOfYzH41i3bp1xnVJIOCKsBqG2tjZEIvLXstQhogqVDyXpKBQFdqUAimFpx+PxghG8H0c0+97qODGqqNQzEoXlAUX4CkWBnRxRabo0T/CRSMTkaPVS3MxqEGLbRkZGjHNbWf0KCl6gniKFosBKjqg0mUKMNJJF1bAwyqDgLfxMJlMWxdwUKhvKwq8QlGPpXhms2tnS0rIsZAq3ZRkymYzjPna/aakimhSWNxThVwAqpSa6m3a6GbTKbXDzU5YBAAYHB23v0a6vVJVMhUJAEX4FwK+1V2zidGqnG8dpuQ1ubssyyGDXdqe+UlUyFQoBRfgVAD/WXimIMwyrtNykDC+VNWWwartTX7mRwMptJqRQ/lCE7wPFftH8WHulIM4wrNJykzLclGWIxWJGNUu353DqKycJrNxmQgqVAUX4HlGKF82Pw7MUxBmGY7bcpAyr9rDveBIeHBx03XY3fWUngZXbTEihMqDCMj0gmUxieHjYspphkPMODg5iYGAAg4ODeaF3fjJFSxEGGUZGa7mVQZC1h0Es/ual7UH7qtxmQgqVgRvGwg8qwzDL3gqsmqFX68rtjMFrpmipwiCDZrS6kTJkNeQLJbGJ7REhOqW9tCVIX9nNPPw8hwo3BkIhfEJIL6X0lMV3uwEkAfRSSr8axvW8glnmDOl02vjs9sVw47zzM50u1NS8krM1rYjQanDk+49tS6VSoa0SxdozMDAg/Z4n3kKWcOAhG9AZlJavYIXAhE8I2QHgEIANku96AYBSeowQkrAbGAqJkZERy+1Bp9Be93F7TFhTc1m2JhCMDEoVHWI1OIqglJpksbD8LKXyL9j1N2/IMCgtX8EKgQlfJ/Mhi68fAHBU/3sIwA4ABSN8qxfDalEJq+0y2E2h+X3s2iFrq9O5gqAQs4dSRocEGQTDIMGgMpmfgdKpv2WEz/YrRHsUKhuF1vDjACa5z2sKdSG7FyMM2E2hgdyLL2vH8PAwhoeHLdcttTpXUBRi9lDK6BA3g64dgpKgH/9C0DBKq/5mRO931mH1nI6OjiKTyagBYJli2Tht7YgoGo1Ka5vYLTYhQnzZo9GosSQd/3IMDg5aErnduqUMYb5ohZAgShkd4jToOsHuvpPJpEF2DDJS9upfYMf4HSjt+vXy5ctoaGjA9PS051mHlU+K3b+K61+eKDThJwE06X/HAUyIOxBC+gH0A8D69et9X8iOiDo6OqRT8ba2Nk/XcOOQcyI+SqktYYW55F4hInWCDiJBZASniBl+P5EEAetIKrvyCW5nL06E7negtJvVUEqRSqWwbt06z33qZoBWvoDlh4IQPiEkTilNAjgCoE/fnABwTNyXUnoYwGEA6Ovr853DbkdEXsPl3MCKuILIDmE7/wpx30EGkTD0f6eIGQDo6OhALBbLs9iz2az0ek4RWEEc9my734HSaVaTTqdtDZGgz6mK619eCCNKZzeAPkLIbkrpM/rmFwBso5SeIoT06ZE8yUJG6DgRUZjhclb658jICFavXi21LnlEo1Fks9mixMiHHSYYZBCxsoK9REsxuClNMDY2liflyaxWt874IO3xO1DaReM4tc1ugHUrj6libcsLYUTpPAPgGWHbNu7vw0Gv4QaFsGatYGURZrNZTE9Po6GhwbK2Ci8luW2rqC9HIhG0t7eXbKrtdxCxItZsNus5WcgNgbqVUeysXbcDsRuDA/D3fLJ9vA4YdjITkw75lbtEubES1ytQsMeycdoC7olInObyxa/cvIh2FiHTVdkL5Sbqw6mt4ouezWY9J46VA+yI1atW7IZA7axucZlCmSPdy8Dqpj1BZlt+BgynAU9sjwrTXP5YVoRvheHhYcul4dLptOckHSf9M8zMSzt92Y8UUkq0tLQEihsX4dS3VlZ3LBYzbWf5GCyayw3ZWZGjn9/DLdF6Pb9Xv4E4qLA8kUp6xhTssewJ347sreAUneCkf4ape9oRoZfEsXJAPB7Pc6QyFEIrtrKKrQbRSCSC2267zfJ8VitfBQlhLGQim1e/gVVb+DIVVuHICpWBZU/4fhd9dgr7AyAlr7B1z6DJRuWGtra2UENFnaxjmVXsZ5bhtPKV3xDGQiayeZWBrNrCv0NOeQoK5Y1lT/h+4WRxMiIptO5pJ4NEo9GK013DdK77tY7DWlBGRDnWUhKf0+HhYYyNjUn73M81Vax+ZUERvgReLM6wwx5l50+lUnkzFUIIVq1a5Uh4hR4Q/Jw/rD7zax2HuaAMDz+yVCELsnmRoPzOhNn5hoeHQ6tOqlA4VEa93ACweujYQhUsMSvIoh2FRkdHBzo6OvLamEqlLAkPyFnA7IVnL3qQl5tHoc/vBL/WcTwe3oIyDH5lKbtFU5wWxrGD+NuIkD0nQZBMJkv2HCi4x7K38Ds6OgCYLZh4PG5srxT40aILXeis1MvsBbGOvc4y7Bz1XipfWs2GZIu6BHHmepGggi7ULoOSesoTy57wgZyFvNzgRHiF1odLWUgNKO6qXkF9D07+BvE8siJ8rEomX3nV6vpeJCinfSORCKLRqBGlI4uy8tsGheLihiD85Qonwiv0gh2lXnC8mNnV7Hp+z+11NuRElk4Wv1N0F/+c2JE4ISQv+cxqsXYR0WjU2Ffp+uUBRfgeEZYTNIzzOBGelQwRi8U8t1cGuwGnWNFDYTmAxfIVhBAQQnzHm4v373U25CYc127A8CJB2ck5Mt+Gmzo8hBBkMhlVbrnMoAjfA8JKkgkz2caO8KwifKanpxGLxQoW5w0E05+LDVmMPV9Xxqn9slIdfAE9O+K2mg25LW5mdW4vsx+7BD6rjF/x3GJ5kkwmU1L/joIcivA9ICwnZTGdnalUKm9bmNfyoj+X68vuxmlp1X7Z4O02OsXO3yCSqhXs5DO3sx8/0pzTud0s+K5QfCjC94CwnJTFdHYW4lpOck2pnble4bZdsv28RrgwcrWzuMX+ZQEHhZLPynGhHIXCQBG+B4T1EEciEek0OhIJPy0i7BfPjRxVaS+72/IVsvZ7GcSqq6sdVzSz6t9169ZJV7YCgstnhXB+FzOCSsE9FOF7QFgPsZho47Q9CMJ+8dzIUbFYTCprhOUsDgonzV0Gqz5zO1i47XO7RctlRByWfBZ2xnixI6gU3EERvgeE9RBbhcC5jW/2grBfPDu5ZmBgwHAUy2C1vZiQWdBs0ZqZmRnPUTpWAyq/CI6XPrcbPGTWeznLZ4UuO6LgHYrwPSKMh7jYkkeYL56TRWvnsCwFCYnWvFX0SCqVsi2NbIWwB1Sn/hWt90JIduW0uppCuFCEXwJUsr7pNlxQhmJr+DJr3gpBBqMwB1Q3/cu3Ncxnqdirq1VapdflAEX4JUAl65tuwwXFJQNLMaB5iaAptUOZJz9+kREZ+LaG+SzZ9Zfbkg5uUciFXxSsoQi/RKhkfZO13SrWGoA0osTN/YZp9bm12ks9uxLJL5PJgBCCeDye50yWtTWsZ8lNf4VFzKUuvHejQhG+gm/E43GpZs8IyOuLG7bVZ6VvR6NRRCKRspldWZFfKpXyPXD6gduIozCIuZydzcsZivALgBtFmwy79HTYVp+Vvt3W1ibNmC3Vb2ZHfsWcCXrxz/Bt9tN3lZarsVygCD9kFEObLKcBJczS005Wn9f7dqtvl1pPtiK/QiTi2YHdq9VC8zwYMfvtu0oOXKhkKMIPGYXWJoOQUzkNFDLYSQrDw8N5Bcnc3LedhWy1BCBQXD3Zat1itoB4MX8jsb9kkTs8Mft93is5cKGSoQg/ZNhZqWHUBvf7glXCzMNuwXaZryAIKcuITESx9OR4PC61qr3eXyEGdLuKqHZ18d30XSUHLlQqFOGHDDe1z4OQrd8XrJxnHgzxeNyS8K3gl5TdhGwWU0+2klDc3l8hB3Q3Vr8IpcWXJ5b9IubFhmxRahn4RaS9wOpFcnrBCh0VYTegeIFXovBLLE73XWw92e/vyhBW//u9Fg+lxZcvlIUfMmRT4DDJ1q+zq9BREXb36EVqsIoUqaurw/z8fGhOPrvfxUvp4rB056AF58qh5DbgfkF3hdJAEX4BIE6BrbROP2Tr19lV6KgIu5h3L1IDK74mkt/8/LzvgmQyWPWHbEk/hkLKJkELzhUzzNHuWk7lnxVKC0X4BYRdFEgQspVpqqJDGMgfFAqZxGNFoPxSgQxOvgOrVbpSqZRBKKxv/ab7+xk4C+kHCWqhFzPMUYVUVi4U4RcIdo6tMMlWZnUODw+batnwi2h4scC8yheRSCSvyqKVE9ZPITM+Hj8MS9ttyCa7dyfZKsjvGdRCL2aYo2wW1tDQoGScCoAi/ALByrEV9rTX6jpBLVEvpGq1CDjgj8icjilVxJHVSmWAlifAQitLtcxgscIck8kkpqenTdump6cRi8UU6Zc5AkfpEEJ2E0J2EEI+b/H9Qf3//qDXqiQUy4nm5Xxe9vUS9WG3ryxqyYnInI4pdN+OjIxI74ctimIFNrthA4TbxcwBjazXrVtnDGrV1dW2/gS/YPLfwMAABgcHPbWRYXR0VNo/o6OjYTVToUAIZOETQnoBgFJ6jBCSIIT0UkpPCbv1E0J2A9gT5FqVhmI50dwWvPJ6bS+k6lQLBvAmNTgdU8i+TSaTllZ8JpNBR0eHq1yBclhmUERYUlixVmwr98zwSkRQSecBAEf1v4cA7AAgEv6DlNJnAl6n4mAVXhj2uq5W1wlaj94LqTrt64fI7I4ppNPQLm69uroa8XjccS0ABpZdXS5EVUkliUtd32i5IqikEwcwyX1eI9knYSf5LFfE43E0NDTkbZ+envY1jfZynTDkAS9SjB/ZJggKKX/YETm7H7fJdex8XuWdQiEsKcyqqFuYxd6KmUh2I6HgTltK6VcBgBCykxCyg1J6jP9e1/b7AWD9+vWFbk5RYRVeODIyYjtV9TKVtXOg+Q1hZPvLZg0ylKIQVqHkD7t8AnY98X4jkYg0/JSBUorh4WHDpxFmu708K2FJYVbRV+3t7Z7OYwdVL78wCEr4SQBN+t9xABP8lzqZT+qSzgSAhHgCSulhAIcBoK+vz/tCqWUMq4czm80aOrE4VfU6lXWapns9n104aTabtTx2uRTCsquhz0OWC+Ek9YQtS3j9bcOSwsQBj2F4eBipVCqUctmqXn5hEHQOdgQ5Ek8AOAYAhBD2tJ1g2wBs0D/fMHD7cDIL0MqytpvKOllCXs/nVCfFzbQ6jEiQUsGvXBSPx3Hrrbc6/uZhyhJef9swpbB4PC71RyWTSc8F8GQotkxYaswszBTlOoEsfErpKUJIHyFkB4AkF6HzAoBt+vf9hJBJABckETzLGl5WEAJgu69d3Rc7S8jr1NitM9IKVlZnKpUKrSxCoeF1tsJb95FIJM9hLiIMWSKZTLr6DWWST1h5IFYDeTKZDGzlL9d6+TMLMzgzfganx05jYHzA+H9idgKpR1KIRqIFvX5gDV+XZMRt2+y+v1Ege2iz2axl+JqfcrNO03SvU2M3YZ52VqyV1cmTQ6EjLooZzicOcEyqi0ajlr9zNBoNtDYCu6YV+PPzqLRIl0qWCWfTszg7fhYD4wMYGBvA6fHTGBgbwKvTrxr71FXVYUvzFuxM7ER3czcWM4uoi9QVtF0q07bA8FNL3EtIpWxQicVihpNWZnHanc/NrCSbzRoE7rb8gIhChQMWO5zPSgKLRCJoa2uTDsaZTCYvSctL++xkN/H8Iso1DLNSsbC0gPMT5zVS56z2oakhUGi/0YroCty29jbcvf5u9Df3o6elB93N3eiMdxbcohehCL/IYC+alc7JiNPNOqyyfZwsTieLkm23W9c0k8lY1uuxs2xF8LVxxAFLJv+4sdzdOLHDtP69Jp1lMpnAsfB2g6qTnOR0vBew/pRtX25IZ9J4ZfIVkwxzeuw0Xp54GRmqPe9REsWta25Fb3svPvrmj2rE3tKNW5puQVWkPKi2PFpxg4G9EFZSjNNU1s6KtbM4b7vtNtftE8lRBhlxsRIEbvwW1dXV0nuRyT+pVMrVmrZOBc7Ctv69Jp0NDAxYti/oNd0OtmFFujCdnv+94vF4aIvalwKZbAYXkxfzLPbzE+exmFkEABAQJBoT6GnpwYc3f9iw2G9dcytqqmpKfAf2UIRfIgRxStlZsUHjl3/w0jCeeP48LifnsC5eh8/t2oSNK9xH2WSzWXR0dORZ7DxZA7nBzc1Sg6IPgN/OW8Z20UDV1dUFyTT1GupoR9ZudX2ra7oh+7AjXTo6OiqS4CmleP3a6zg9dtpE7GfHz2Juac7Y7+aGm9Hd0o333PIedLd0o6elB7etvQ311fUlbL1/KMIvIfw6pexIPUj88g9eGsb+7/8Gc2mNOIaTc9j//d/gT966FpmlDP7q11O4mspgbSyKj7+lEfckVkqvI7sv5lcQCS1oCB9/r3bhjnYLpLMSCDKydZKAvA7cdmTtVtd3KxWJWC6RLl5AKcXo9dG8qJiBsQHMLOZCIdetWofu5m7s7duL7maN2Lc0b8GqmlUlbH34UIRfRnCrL9uRepDkmieeP2+QPcNcOoNDL05gbjGDhYx2zvFUBn/xz1qOHU/6Ts5lL/fiFvxAZncepxo4bDtPtgBcSUBeBm4ZWS8tLeXtx8fTy54Jt1IRoFnhNwLJX529qhG6IMdMzU8Z+6ytX4uelh58/PaPGxZ7d3M3GusaS9jy4kERfpnAjb7sZgUtrxbnD14axqP/dQBTszax9XP5hLSQoTj0qwkT4Tc0NOCnF1N44vlTJknog3dYT/ndRAURQtDQ0GApCzE4zW7c5kXwZFuIYmM8WbOEOxnYM+DG52B378uN7JPzSQyMDeQ5UMdSuRlevDaO7uZu3N99v2Gxd7d0oyW2PBO33EIRfpnAa4kEHiKp21mc/KDx89fm8LVfjCGd8VfRYmaR4idD1wEAf/XrKYynLoEAYGdjkhAAzM6m8PUfX8R4agnNsSp89p1d+Mjdt1qGlcqidKxkIQan2Y2bCCQGpxIJYSCZTDpmIbsdcJbjsoPXF6/jzPiZPIt9eCYnza1csRJbmrfg/Rvfb7LY161a57rA3Y0ERfhlAj8lEgB3K2jxjtjmWBQfe4s2ff3aP11FNmD1osMnJrGwRA25RzzdXDqDL/6X0yZJaCy1hEd/+AoAGKTvxgp12s/t7Maq3j0Pp0zloEsasnb6gaxNlZyZOpeew7mr5/Is9kvJS8Y+tVW12NK8Be/seqdB6t0t3VjfsB4REl6VzuUORfhlgrBLJDCIjtixVAb/5z9dBSEITPYAcG3BmTytJKGv//giPnJ3eMs9As6DgpuoIN4ytppVhZHM5XemYOWAL/fM1MXMIgYnBvMs9gtTF5Cl2nNUHanGprWb8G9u+jf4ozv+yLDau+JdRU9SWo5QhF8mCLtEAoPMEZuhyDfFS4DxVP5AUGi4KRshWsay6J4wtHw/DutKkGmWsku4MHkhLzJmcGIQS1ntN4+SKDau2Yg3t74ZH9n6EUNnv6XpFlRHVUXMQkERfpnAaUre0tKCv/3Fefznl3KhkZ+4oxG//7ZNtue9nJyz/d4NokQbH8QZQZQA9dUEM4vWo0dddRRVJCvdpzmWe/yKVf/GbuCUSWN2oaNBtXyvxfXKTabJ0iwuJS/lImP0ejHnrp7DQmYBQC5JqbulGx/c9EHDYt+0ZlPZJyktRyjCLyPYTcl/ejGFv/jnScwvaVNfLTRyEh0dKXzwDmsCaKirRnLOOzFFdMmnORbFwhKVSjer66rxhQ90myQjAIbjtkOP0pmdTeHRH75iaPgAUBMl+Ow7uwDII5SGh4ddL9jiBX6WnixUbXYrh7UsGqkQC5q7BaUUb1x7I89iPzN+BrPpWWO/9Q3r0d3cjXdteJdhsW9u3lyxSUrLEYrwKwRPPH/eIHuG+aUsDv7oLLZZDYFJAAAgAElEQVTErMsO+w1UyFKNlD/+lkb8h19ele6TnE0bIZd8aGdDXTW++D9054VjyqJ0AHtdPeziZ/F4HKlUKi86hq0SVsiFQ6za4zZJrdCglOJK6kpeLPvA+ACuLVwz9mtf2Y7ulm482Pug4UDd0rwFDbX5S3oqlBcU4VcIrKSZ0WsL0qQhI3bfJr7eCQsZir/69RSaY1UYk+jt6+K5Uq7z6dxglJxLG+GYjPQ/cvetlg5aJ2nESS/3KgdZLT1pdY1iR8AUw/k6MTuRZ7GfHjuNybncEtVr6tagp6UHH33zR02x7E11TTZnVihnKMKvEKyL12FYQvprY+bIBZ64fvDSMCKEIONSI5bhaiqDr3xgI/7354ZMsk1ddRSf26X5D6wydP/dU/8CALaJV4A756VdeKTXgmh+Ip7KPQLGCtPz09IFN0avjxr7NNQ0oLulG7s37zbFsrfE3C/WrlAZUIRfIfjcrk15WjmTXESk02l860cn8PVfjEnJvlr3wqZdxGW2ra7BR+6+FfX1sbyiah+8owM/eGlYOhABQIbSPEtfBjfOSyu93E9BtOW4XmpqMYWzV8/mOVBfv/a6sU+sOoYtzVu0QmCcxd6xqqOoxM4qqlp9VigcFOFXCBhh8qT7B7evxm+vl6+Q83+duGpykjJECcETu28HABz80VmMXlvA2lgU29fV4YWhVJ5jdd97NhvXF0mbxfjbYS6dwRPPnzeOlVXjZN85lY2QwY+1XslZqfNL8zh/9XyexX5x6qKx4EZNtAabmzfj7Z1vzxF7czdujt9c0CQlnrhZ3/KfCSEYGxtDJpNBW1ubUUZ7dHQU0Wi0Ivq/0qEIv4Igkq5duYWrKYvFSyjFE8+fx+d2bcL/98gOU9GtLS21poqYn+xba2uZy6QcGS4n5zA4OIgT4zBJQ3zphQ/ekSvwVegQzUrISk1n0nh58uU8i/3lyZeNJKWqSBU2rdmE7eu24xO3f8Kw2Dc0bih6khJP5OPj41haWgIhBNFoFM3NzRgdHUUkEkE2m8XkpOYnaGtrw+joKCYnJ9HU1KQs/SJAEX7YoDQXGsOImP8c4gMtIy5m2a6NRTFuQfo80W6J5Y65J7HSVAzNqc652xj/tbEo0uk0vv7j16VaPz8DYPdVaPItF00+k81gaGooz2I/f/U80lntd4mQCG5pugU9LT24v/t+w2LfuGYjVkRXlPgONOs9k8kYRE4pxdSUVqGyqakJIyMjmJqaQlNTE1pbWwEAk5OTxv5NTU2Gxa9QWCjCDxM/OQDMTwO7HgN+dhCYS2pB6bUNwDv2A8/t1/6+Z39ol+SJK5lMGklCH39LI/7inyeksg6QI9p/2NsrnSW4IUQrRzIP3s9gNQAFSQ6rFD0+S7N4Nflq3qLWZ6+exfzSvLFfV7wLPS09eP/G9xsW+21rb0NtVW0JW28PQgja2toAwCBxBhmpt7W1mfZTZF88KMIPC5RqZH/8W8ClXwA3vxV48ZD2XetW4OVjwOWTwJ1782cBITzsTN5hYJa6VsXSmmj9lFNmGnxDXTWqo8RUbbM6ShBbUYXpuXTeQilWsw4+vNMryk2Pp5RieGY4r17MmfEzSKVz4aA3rb4JPS09pmJgm5s3Y+WK/EVlSgGvjlUZkfMQNXseo6OjivSLBEX4IkQCtiJk2fZdjwGv/gIY/Q1whXNmsr87tmkWP3+OkKx+WbQKk2g+8f3XpUTbUFeNux//sdmB2t2hk3p+TXuxEFtyLo3qCEFjfTWSs2nTvmwFKR6yWQcf3ukHpdLjKaUYS43lZBjOap9emDb2a421orulG5+641NGyOOW5i2I15ZeTrKCH8eqjMh5jI6OorW1FVeuXDE0e17DB5SlXwwowufBJJl3H9DI3IqQ7fbr/znwJYvVc27aDhx/EgDRjn1uvzYjCMHqt4tKkRFtdYQgtbhklF1guv6JVyfxvZPDUseqzEmbzlLUr6jCS//+XabtMsubn3VcTWVcLZDiBoXW4yfnJvMs9oHxAVydzWUgN9U1obu5G7/X83voaekx5Ji19WsL1i4eYYU6inq8G8cqI3t+H17Dp5Qa54tEInnyDqCt6csGFxWyWTgowmfgJRnATMh3PZQjYUo1bf7FJ3P7/ehh7fOde4HnbSx1CuCuvdo52XU6+mAqXUmpdr66uNzqt5iB2CUvyYh2dnEpb5WruXQGf3/89bzYfab3W2ntsu38ik5iW+5JrHRVx7/YuLZwLZekxFnsI9dHjH1WrViVVwisu7kbbStLZ52GHerI6/FuHKssGoftMz4+jsbGRlOUDvu7paXFROKM9FXIZnGgCJ+B6FY3YCbkux7KWfIA8NPHNVnmToG41+lyzfEnNc2el3Rat+qavj4omEB1rZ8A73k8N3h09AHveNhM7jYzi5Y7HrJNXronsRLv3LDKKMLV9fA/SPezyspl8o7MSWulwTPSLyeNHQBm07M4O342r6zAa9OvGfvUVdWhu0UrBMZIvaelBzetvqlkxC6zfgG4ssit4uJ58ITr1bHKEzn7m78ef7x4HtY+rzMLBe9QhM+DkT4jccBM9sYs4EnNUufxpu1ATQPQtlXT8Dv6NM3+1X/SyP/mu4E79wDDJ8zHLS1q/7/4ZG7WAAA39Zn3c5iBxBu0wlVulgoErCNsohalGJj8Imb7OmnwpYx5X1hawPmJ83kW+9DUkJGktCK6ApvXbsbb1r8NPc09htXeGe8s6kpKTlIGI+PW1lZEIhHD+o1EIlKLvK6uziBddiylFFVVVUZcPG8584QrI1c3jlX+Oxmp20GM9FEhm4WBInwezGLm8dz+HOkbswCqa/H8schJMDe/LTdboBR4/hGgZjWwMK0RPps1MMIWZwR37QXe/Xi+ju8wA/GiZVuR94e3dZg0fLad19qtMmWtUGiNPZ1J45XJV/I09pcnXkaGavdRFanCrWtuRW97Lz52+8cMi31D0wZURUr7GjhJGTwZp1IpJBIJw/lZU6PVlBct8traWkNHJ4QY3zU2NkotZ0a4vP7O9uePD0q+dgObCtksPBThMzCyZ5o90+Z5i5rtJxrAd+7VrHNCtEgdNjhQCkQiuQHjx4+ZJaJ3H9D2eeNXQluE8//kMWD+mra/3QzEA+zIu+/mJktSl5VYKBZYkhJP6mzBDZakREBwS9MtecXAbl1za1kkKYlwK2W0trYilUphYWEBZ8+eBQDU1NRgYWEB9fX1eREyhBA0NjaayBuAyZkqkikhBO3t7aZj2tvbjb+ZY9Uv3AxsKmSzsFCEz0CIFmXDCPmnjwPDv9Ks75rV2j4/eljbdu2ycDDVSH/FKs2aZ3XB55M5S51SYOEaULtaIGiqxefzYNLOex7XdPvBH2oyEWgue5fhRw9r+/kkfRl5l5LUAS1J6bXp1/IiY8Qkpc54J7qbu/Heje81LPbb1t6Gumr/cf1eETSqxK2UEYlEkEgkDLIHgIWFBZMFLoY6NjVZlzGWkagd4YZh2dsNbNls1jFkk/WXgn8owudxz/4coc4lgWGdiDvvzjlTGbb3a9b78Sc1p+u6XiCT1qSZu/QwyxcPAW+cAP7omDziB8hdg8k4zz2snXP4RG6QGP2NNvDwMhLvCGazhQp7GSilGLk+Il1w4/ridWO/jlUd6G7pxjs632GEPG5euxmralYVrZ0yUg8rqsSNlEEpxZUrV/KObWtrw9WrV6WhjrOzs3n7M7C4+EgkYpyfL4FgRbh+4WZgEyN9KKVoampCNBo12qwidoJBEb4I9pK953Ht/xefNBNtxzagY3vue0D7/vIp7e+2rcCuAzlfwPAJ4FFdv77roZzkw6614V7NQctmArt06ag2npODALOMAwB7fq5LRxFtRlHmZD+eGpcuuJGcz6081RJrQXdzN/7wLX9oWOxbmregsc4ir6EIsCL1MAuBOUkZfJw7k3EYhoaGkEgkDB2eP+f8/HyeBs9/Zv4ARvrz8/Oora21jJEPCqeBjY/uyWQymJqaQmNjo+FkVhE7wUHcLqBseQJCdgNIAuillH7V6/c8+vr66IkTJ+x2KS4ozZE1wxd0guIjd8R9GJi2z/Db+zSLndf0B38I3Poe4J1/lvMj1KwG3vlI7rhsNj+Zi0lPfFvKAFNzU7l6MRyxj8+OG/vEa+OmUMfu5m50t2gLbhQTTnKMmFAkkjqfOcrgNarE6RrsXFeuXMHMzAwWFhaMaw8NDRmfxWuK1Sv5KJ21a9fmHSu7pqxPgoC/V6f+8rLvjQ5CyElKaZ/zngEtfEJILwBQSo8RQhKEkF5K6Sm335c1WAKUiOce1qxxto8Y1cNDfC4NLR6apX/+H4Arp7XPrLjai0+aZZ9sFjj82+bztG3NdyYXGTMLMzgzfibPYr88k/NvrFyxEt3N3fjArR8wMk97WnrQvrK95C+tGznGjQwRNKpElDKsLGtWZTIWixn7sWgdmQXuFBfPR/rYhUB6uRe7AdRuYJP1m4rYKQyCSjoPADiq/z0EYAeAUx6+L08wsmfW+V17tcgZXt7ZdUBz0DJdftdjwH/YBKTGcuc5/qRGzre+V7Psj38rR9aMsFt7tEGAWfAdfebEqucf0b5v26qVbWDXbNsqcQBz7ee3ByjQNpeew9mrZ/Ms9lenXzX2qauqw+bmzbi3616T5f6mhjcVNZbdLbwk+dgRj0yKGRkZQXt7u4nonEjKLvuUb3Nra6spkYrF4Fud34642bFhEarTAOp2YOPvV0XshI+ghB8HwJfHW+Px+/IEIVppA1b2gCJnSQ//SnPE/uxgLqpn12Oadc7IvmObdszlkxpZ33w3p82vzln5AND5tpyVD5gTrvjIoV2PmTX9mtXAPZzsw+C2HpCAxcwiBicG85KULkxdMBbcqI5U47a1t+Gtb3orHux90LDau+JdRV9wIwi8JPlYEY+sENjQ0JAR0sjCGd06Gu0SlQpRciBMQs1ms6YBVOwbcaZhN7DxbVNF1sKHctpa4Z79wNv35WQWFgnDPt+03ayh18X1sgk0VxYZ0C125pB9TLPQecgSuMR28Ba6XUSOi3pASzSDVyZfyYuKGZwYxFJ2CQAQJVFsXLMRt7fdjo9s/Yhhtd/SdAuqo+VVZ94v3EbGiJErIyMj0kJgAFBfX4/5+XnMz2uho2E4GgtRciBMQuUzgAHnAdRNBq7X2YCCewQl/CQAFuwbBzDh8XsQQvoB9APA+vXrAzYnZEQiuRh3u/o6gDmkkyf8Pzpmlmd4CejQvzVb93wCF39+8QG3euDZcQCyx/8TLh7/Swwgg9Nv2o6B2ddx+tBbcO7qOSxmtHIOBASJxgR6WnpMxcA2rdmEmqoav71W9mB6tpOFOz4+bkS68HHgtbW10kJg/KzhzJkzANw5Gt1kn7LzhlFyICxCFQej1tZW0wDa2trqm5zdzgYUvCEo4R8BwDSIBIBjAEAIiVNKk1bf86CUHgZwGNCidAK2J3wwEnWb3WpXmoFP7AIAkVQJNNL3EGZJKcXr117PT1LCDGbZKd74OdbPrEdPSw92bdhlWnCjvrre1XWWC8bGxrC0tIS5uTmDzAFgbm4Ok5OTmJubQ1dXFwAtNHBubg51dVoiF28VNzc3A8jXyb3q4l6cx27P6yYZrKWlBdls1kSofFy+G1gNRgxXrlwJRNJuZgMK3hCI8CmlpwghfYSQHQCSXATOCwC22XxfOXCqryPux5dmYJ8B7TM/C3huv5Z0ZSRcsWP3alUy85pBMXp91FRSgOnsM4szxn7tK9vRE6lBP1agh0bQjQi29PVj9fu+Vlbhm6UAs0inpqaMZJ5UKoXFxUWsWLHC2AfwZ1l71cXdyjVezutW75ftxyJ+vCaNiZb95s2bTeGqxbTMVT19ewTW8HULXdy2ze77igFP4nfu1eQd9plSc0kD0YLn5BWTxc7+5/el1LTv1dQ4Bq6eNVnsp8dOY2o+V+NkTd0abG3dio/d/rFcLHvzFjT97Al94PhT86ATrQk/G5f5Fqz+LzOIJA4Ai4uLxv+NjY2mCBsvlrUfXdzNoOLlvF4GkLD8ArIM4CtXrhiafjE1d7uKoqw9NzqU09YOjMQ7+nIx9Yygh09o9Xb4yBcvDtZ79mN6LomBQ2/F6dlxDGx+L06PaQ7UKz/POXYbahrQ09KD+7bcZ4plt0xScjPohAEWDVS7WivsxhzSNav1mkHhLtYeFmQkzsCTPeDNYverizuFfXo5r9tZSVh+AXEwEhPRvEpEQeCmoqgifUX4znjHw1oRtONPahE079EXQBk+oQ0EojUryjyEILWY0ldS+g0G2IpK4wN449obxq6xX/0lutv78N4MRQ+tQXfjBvR8/Dmsa/C44IaXQccL+HNSbtUvVv+freXLPt/1kJY0xr/wHiz/Qk3NZSTOYFXOwK3F7sbRmM1mTSSYyWQwNjZmOg8f9um0SpQIt7OSMBKbCCGYn59HTU2NQe6squf8/HxgsvfyDDBpyaqiaCwWU/IOQiitECbKrrQCA6XAd3aYFy/ZvgeIEK3mjU6y85kFnLt6TiP0E9/B6Zk3MIAsLiYvGofVRqqwuWVrLkGpeQu6jz2K9eODiLBpBEuyKpJ15AhpbP/DWj6CuKALoJE9s/w95gMADjp0c7PvpDJZTRrxf97KDTv+/eLFi8hkMkb9mkwmg5dffhmZTMZVe5zuTRyoGOzyC4pRFsIP/PZ9Nps1VRT1c1+VBlKs0go3FG7qM8htERSDF49i4Op5nO54CwauvIjTl36GCwtJZPVA+moSwaYscNeaTfjkO76E7jdeQs/L/x2Jbf8Tou85aCapje8z18opJ7K3jO3XV/2SET6Td5zWB5ZezlpfXj/0t6BVGRC+5LTLQQQwyy5zc3OoqalBV1cXxsbGDDKYn583/vYbGiizTNl9LSwsGAXP2AAQjUbR2dmJ8fFx4775mjlO1+O1a17GWLVqlVHgjVJqSFZuKmNa+SnE7WGHjLLr+PExWFUUZX2oLHxF+LZYyi7hwuQFDIydxuk3fokBzOI0shhEFksTvwYIEBk5jo2Tcbx5fga/1/Fb6HnrZ9Dd0oONjbeg+ui/10juJ/+HdsK7Pp0vr8hq5Rz+bTPph1gqwTN4P4ApF2FvfpIYw/OPaKRPqXP+Qt7lBH15YgIgBE2NjVhZlQE5/iQA4mkQ4cHCERkxjo2NGUTJSFYkebF9drCzTBOJhFG0jJccurq6EI1G8yQQUdaRQSTHSCRikjFaW1sxOztrJIMxeK2MaXdfYde8CRIhZVVRlA3sN3p5ZUX40BbcuJS8lBfLfu7qOSxktAeHUKCrNo6e+ev4HVShh0bRjQg20Qhq55aAu/5dPpk5xe8zsudr5bDPjPR/dtBXqQQgRB2ckT5/L6y2ENPsYy1aaYnWnlwUk3gpGdlLBjP2wkf/8auIpq9j9PbPoK29HaTtAPDqLz0PIiKs1oEttGVKCMlbxITJO9lsFjMzM6bz8RUtrX47WeQRfy+AlgE8OTlp+ChGR0cxNzdnWiDFbvbidF8jIyOm/Z1KNPDyk+x/vj1uBxJCiGmwY/9Ho1EsLCzg4sWLjn15I+CGInxKKd649kZehccz42cwm84tFvGm1W9Cd0s3diZ2alr7ay9iM1mBWNWK/FIIDDwhs//Fapvi6lSRiBbVwmv2jPRr9MJoDqUSrIhOapGNjCBaVZWzcNzOFGS5CMMntFDVugZg/d0auR9/Uksmu3OvVnNoWFjJS8xfsKj7Q2tXY3TTJ7AifR1rXn4KADDa9Cja/uUbIHwdIr7fPYByg0oxLVNKKYaGhkzHMOuTzTB465R9dpJ1nO7F7eDmFEkkOwel1JM0xJ5LNsixWQz7HGS5Q76iqBgx5MUfspyxLAmfUoorqSt5FvvA+ACuLVwz9mtb2Ybu5m482PugacGNBrZEIcPtH8utRNXRp+n5l35hLovwnR3ALffmQhS/u1MjxdYe4Lb3AXPTmkU8fCJXbgEA/vCH5mgWRvrss8PC5TILmQJ5Ftn1//ZnWHFtHIv3PKoRHqDdE3M668dKLXCrhLKb+oC3P2w+5viTZqIX8xf4e7IYzGZ7PqZZj/c8CtrUhDXHnwR04qdtW82kL0uCs4God/MQV4HSbt/fkoUi+TKyZyTOyzsvv/wyqqqqjBIO/Axg1apVjtEuTuQYVkSO7Bzj4+OeKmCy55INbCyqhndSs8glP7V++IqiYQ/oywHLgvB/8dov8K9X/tWUfToxlyvb01RVh566tfiDrb+P7pYe9DR3o/tfv481q9rcxYoToi8z2KNVwmRWfl2TZtHOjGhEvrSgLXFIKQyB+8pp4Oa35csbPMQXmv8sk1MYwVlYyKS2AW16ti7TwduujWPNy0+BNjWBtD+eizpiyzECulQkqcJpFds/+q+aXs+27zpgngExsueP4fMBLAazVO+foimb1V7Q9sdN5yQs5FOWyezCmcrHaotRMXwMN5+440X3tSPfaDRqkD1bo3ZoaAhLS0vGYuTiIJTNZm2lOTcOWNYGWZu8RuTIzgHkZgduQkYBmCxv9j8fyz8/Py8dSCKRiKNMyfsYgtzzcsSyIPxP/OATuDB1AatrVqO7uRsf2vwhbjWlLWj9x6+DvPgkEFkN9D2kEcWp/+ze2Ucp0PZmjVxufptG+sMngTndemAOzNoGrdyxuBwhX1efLZ7iFjI55bn92izCRu4hQM7CIQSjt39G05GPC0s2Uu6crM7+2x8GIhHQbBaELcr+7gOg0MctQvIjcXY9lu98JtDOEY3K8wEsBrMWpueydvFo2wrsekxrCzeIGG2zAb9OKk84dXV1uPnmmw2dl9WA8Zp96hS739nZaYrDj0Qi6OrqQiQSMUibQVya0CpUFLB3wAKwbZPbqCOnc/DwKj8xiGWVeSmLafT8AGg1IKvyytZYFoT/1H1Pobm+GTettkhSclvx0gpipIqIXfp5mJUt2wfIkb3bUEI7OQXQSJa1SbgvCsGq00m/XbTAX3wyNyAxB+zzj2Cs908R+8cvI3b6r4G7HtJeIj5iRFxvV79+prYRkf/1FZCjfw4c/xaWXvkZFjvvRewDX7GWi3joEo1B9pJ7n/3BZzH9bx7WHLncvbqJZmHrpPKora01LG43q0BZgQ/7lJEvW2qQ96uwyJH29nYT4bN6+uxYtr/MeerkgA1aGdPpvryQp13iG5OyrPIG3K4hHGZ7lxtunMQrKqw9+4Wk99BG8RwMbFWre/abCVkEv3IWL3fYQSLb0OceBuESvsT7YgRosnBGRrDiJ18wnKAAcjMVhv9tEvj2200LtKR6Por6D/1HjDLLq7FRI1rWbkmfpHo+hvrf/TqW/tPdqJ44q33+0De0Y/jj2Kpi4mDGPv/0cem9X1+K4rXE73tO9uHlDx7MmmQyDittDABbtmzxTBAyCQawtrRFa561SZRL2Ln8JEyFEbEV9Bx2iW88Nm/eLPVbeL33G6WQmkq8EmFjSbomfUqBH+0zb7tzD/DqP2kESSmwMK3JJXfuzUWtAEB9MzA7nvu8fY/2vViLRwahVMLY+DgyLEyRkb9wX+TdB8wWDqBFuLz8FGbf/HHU/+43ck5oHgLZA5pccOnMGSMWvu1fvgFynhtshH5Nr9mszQpO/zWqgRzZi+GlQK48hVXdH0mZCPLux7ESQJP+4ouWuAjxJRdfeCbvpFIpI1abhx/d1yp2XxbpwpO9W7nEjzPSaz5BIc5BSK4Uw6pVqxCLxdDc3IxXXnkFmUzG2M+qrLKfUM0g7V2OKJN0zgJClEW+kNT+P/4tbbubGQ47x4uHNKu4dau2/cVDmpO2dasWiVMb1879nsf1v/dqg0KjsLBLhGhkOz/t7vqcgy6TyWByagqjIyMa2R9/EhMb78dI/1nQu/YCx78F+tzDaGluzr0MhIDUxkHv2quRPZDT7vkibKO/AerNq1CueeVptP366wClGtmzdmezpn4de2gQqZ6PoXrCnNZ+/W1/prWB+RueezjXn8Mn8pd0ZGWkhXsXP4tEyCJGRkdHDYuaWYQ8ic/OzpqOy2azhpV58eJFU7Et5sjlz+kXfOQIj/b2dtPKWWyfpqYmT2u9ltNMnUFsE9/XqVQKmUwGly5dMkpLNDQ0oK6uzrLPK+neyxXL38InJHgFSUK0iJS2rcCn9DVc+FIIeyRZscw6NciNk05YWQKPMeRilEN0ZhHRjfdj6s7PI6FHtFAA15eimBsfN+vZ9+wH4a1ltiTjuw+Y72V2QtPsdz2G2e//CWKn/wZrXnkaa155Wru9u/ZqzlKuX+mux5C5cgWXNvXjluF/Rs3UoHG6mp9+Edn7/hKRmtXa4MI7jdu2Aq//yjzTcegPtoCJSIRDFy6grr4eU1NT2iImnZ05GaqpCdlsFhcvXjQWPWlvbzfknZqamjxHLh8xElT35UNBL168aPpuZGTEcEg6RbpUkjNSlgdy6dIlUErR2Nho/E6Adr+1tbWYnp5GPB5HNps1lbgAKuveyxnLn/CB4BUk+Sid5/fnlxRg8lAkYtaoAS2ShWn2L3ISihujxCYLdXJyEuPdf6Tts7iI0dFRtLe3Y/T2z2ByagqNS0v5miX/9z37NStdXGO3bSvou76ikeVte9EJIHb6b4yvR2//DNqgR8To/UoIQWtLC+p++kXUTA1iYuP9GL39M+j4zV8gfu7vkfp/q1BfXw+SMsslhnx003ZX0VKUUiwtLRkaPLMWmwe+g2j6Oia3fw4AMDc7i8m/34No9Uo0/dvPo62tDWNjY0in06ZzMWufkPxFPHhrOwiRyEJBGWpqaox7cSrpwLZVgjNSdC6zgZMRfG1tbd7+09PThrxlVeIi6L3fKJq+HW4MwgcspQFLiAPEu74CgJp1b94J+9ovcwlTzKqvbdD+MU2fh6zoGA+7LNTb/tDUxmg0iqmpKUzpIZjsxRkXrXzx/vg1djmnKfnvf4b5Tf2oqalBfb15CcT6n38J5IFv5cImWXf+/CDqp85g4pb7MCnGO+cAACAASURBVHr7ZwAADQ0NWGx+M1AbB3n3l4DX/inPR4Dte0DffUB78SQDHP+ZEIL29nZjecKFhQWAUkS5jNyFd3wRNT/9Ita8/BQmNt6PZj37MpvNGtLB1NSUadDo7OyUJmF5jVOXkYks9pyBkX9dXZ3rawVd67UYpCfeM+9nyWazSCaT0uP4wU92T0HuPezKp5WK5a/h+8FPDpj1/Z88pjk0V6w276fHp/PhjEb0yfFvaYT99n0wBgrDh6BXmbTyIVCuQuVznHP0+LcwOzGCyYkJrB/6W2x5/W/QGI9rDi9dY28e+I7hBMxkMtb6ppXUdddDoLWrUVtbi8YXvwry4iHQu/ZipP8sZpu2oOHc3yP1vT/B9f/6Z6DPPQz86GHQH38FsxOXsWLsX1E3MQBAdxK/eAjVXb+F2Hu/pPWNSPYAKNHINfXf/tzcH+yef3JAaLZWj4a/j9HbP4OJjfdjzctPYd23txhkP3r7ZzCqEznTxcWIEOaoZVLBli1bDHnHrT48NjZm6zuQafdiG8JwCgdtZ5hgsyYeLS0thpVvB57EnfrfrWXPZhzs/pkcxL8jN4Iv4Max8N2CJ1tAi3U//0ONrK5dNu97/odaklL/z3PWMjuO6eOApt/z0Si7DgAgOR+CaNnyfgZZFmomg5Wva5Uj2wGkNnwKTb96wiC68YkJNK1Z42z9WEhdhBC0UYrrq5s14nzTR4HJSaxetw2YPIPqKy9hpuE2EF3Xn+3+KObn5xADUD91Bt3P3A0AmNh4Pxbf8lm0EQJSuxrpNZvznLoLF36ByTd9FKvnp4HTf61ttKkZJI3j1kmfDzlt+r1DWBTWVRVlG0AjQZnTFHAnFbgp5QsgT7vnUYwMUL8lh4NcT5w1nTt3Lm8/Qgiqq6uNpSYBza/R3t4uzVvwY5VbzTj4OkU3isWvCF+EFdnWr9Ecmgy8Vf/uA/kZowQ52YSVMAByUs2ux/LlHzE6xS4LVXfQkuNPYqMuMzGrFvo+ru9X8pkQgpXv/wrODAwY2+o/9B+BWAwrjj+JNeM5az028DeIAbje/QdYOfD/GNsX73kU0aoqrSvmpw2yT276H5HJZLDmladROzGAjtPfRN19fwnEYrbJcaLjjhXuAqXoPHfIfB/P70fbLu13jEajkBUuY1E4sqxOL8lWdsXJABjJUQCwYsUKE7mtWLGiKI5Hp3aGTfbi0od8faB4PI5oNGrU6Wf9UV1dbciTrM1hDVCykM4gWdWVCiXpyMCTPkPfp8yf+3+ur+ykF1r7zg7z98ef1KJfDI1cz7Jlswcm/zBLVgzRtModYA8j0WLSeTCyB5BX/9wrstmsZklzTujRK1dAdx2wPCa2cqXpc9u/fMNYoYrUxkE7tiHV/VEMb/1jjL7ls5i45T5NJmq9GZGqqvw+FxzrouOuqqoKjfE4Os8dQuz0X4PetReXHzyD2Td/HOT4kyDPP4K21lY0NzebqlFu3rzZkHdqamoQiUTyEn28vvCyMFGm4bM2NzY2msi+trYWGzZssAzBDBsyaYm3nnkEkTf4e5YVqWMRSfG4OWGPlYJoampCVVUVWltbjUH5zJkzrpLrrCCbGbo9d5h9U2ooC18GGdkO/sj8mS3yQYgWW86csHfuBUC1GH0Gth/7G7Av8yDmDsgKhQF5bew8dwj1H/qGEY7oVyq4cuUKZmZmciVlz/7fmB57DcPd/zPqfvYoJLnGALTZhlEv6Ln9IMe/BbDFSu7ZD/KOh1GXzQL61H70LZ8FAE1+YnV7eEiS43jHHfsba9q1+kHvPoB2AOR3vwHU1QO1DSA6kfMExNfDZ+uw+oVVmOjFixcNbd5oJ2DK8k0kEqFEArmFVRw7q1ETpkNTXGhGXORclmHLjBRWF2h0dDRvnyBkbxXSaXfu5ebsVYQvQiRbVhSMX6REXL6PJVmxiB0Rz+/PWfjPP6JVpOQhKypmlzsAmJOe+Lo3sRja9EHFj9XIapYYtdhbWjD7yxHEz/09aq+cRO3UIJaqG1CVnjaOmWu4BXXTrxjHE3ZPrL16G7KUYojXsgnRrKyJCaz+5WNG3R6nSph5mbP3PGLo/MY3NgMFnwTFf/YKMUyUl5nm5ubyBtxSVm+0Iz2efMOUNyKRiOVAm0qlpMesWLECyWTSiOQRBwa/mc9iSCe/4LnVuYvt9ygGFOGLkJFtzWpNw9/4Hk133/UY8OovtGQsIiRZ8YR/5x7N0mehnPwqUTxkZR6ccge4NrYQAvqhb2gauG7V+iUSUes9e+4ccNsePR5fc6pWpaeRrmlC9YL2ItRNv4Lr3X+ACImgri6eayNXYZM58fh68Ia1V1sLWrs6eHKc3Wf93sK02MQwUbFcAl/0rNRJQ3Zx7JFIBLFYzJe27xTm2dLSgitXrpjKJbS2tuLSpUt5ZN7Y2IhIJIKJiZyvjF+4JEifiQM+v6Sl1bmL6fcoFhThy8CTLUu6evWXwOJMzhHL6rLzpCxKEiD5pM+cvW5qutuRmDAgEFa9knM8+kWeg4sQ1H/oG7koGgCD7/8v6P7e24zPsQ//BcbHxzGdzaKNvVgwV7G0k1VWvv8rwZLjXKAQFhsLE+ULrrFKl2EmDYUBuzh2Sqnn+jxuBk9ZlUuWhMVKWDDMzc0hm82atrG1fsPoM/6+xcgsJuuJ55Y5eyuV7AFF+NYQiQewX3VKlIGY7HPnXvN5b32vVlPfryUra6PVZ5/I03opxez3P4MYt0/ihT80H/T8fmT0LF9ATqaOiTMFup/c6cK32Kx0cdE5anXvsvMVkkxkMfx292DVFreDp11IJG9h81VMV6xYgQ0bNhgrgs3MzKC5udkwEoL2z9jYmLG8Im/xRyKRvFmen74pZyjCdwNGzFYLkltp7pTmZ9QuXDM7cQtgyQZBXuhjNouan34RMT3Gf2r759Dxw4+gLvkyaNtWjH7gCFb89ItYc/xJtAHA7Z+xJVMvSUOFyAoN02LzKtWI1wgrzjwI/MpNXgZPWZ+zaplsXyaNpdNpLC4uGmGcrLImi6Ly+zvxujzvd7Gb5ZWDFBc2FOG7gVWIJE/UouYOaOL18Aln+aaMHhpRfgCA8eqVRoz/2oYGLCXehcVXo0h3vB1t69Zh9J5HMVtXh/raONra2w0rH/D/UhQqOsKNxeZ2oAki1fiRlwo1AHq9B9F6dxo8ZX3OW9isHYlEApRSU8w+Ww7SDnb9IlshjBCtWJubgaocpLgwoQjfCW5CJGXETUiuXHIY8k0RwYcRjoyMYIoVaSMEmUwGM32fxmtdv4emtWtRD2i1+X/3G/mrbMHf9LdQZOjGYvNqdfut7+JVXipkeKCXe+DbATj/3l6tZDFmn3f2yn5ju9+rubnZ9jnic1Ws7jdo7aJygyJ8J1jJNYAzcQet0llijI6OGksCEqJlPRohiGvXBnqx7VAoMnSy2AD4cup6kalk9+nGQi50eKCbe+Dbwa4pW8iFvw+3VrLT8yPLFRgZGcH8/LyRxSz2C9sG5D9HYvKUnWHi9/ctRyjCd4MgxC3uUyEPC/+isqm3HTGFPf0tFBk6WWzFDMPz4hAsh/BAcSBmYOsLMIi/txsr2e75YWQv/sbMGGGLplj1i/gcsVyJ5aLLe4EifLeoUOIOAhZDPTo6mvcS8Jmk/P5hTX/dkqHVbKCxsdFSl7ey2PiErEKH4bmdEfGzl3IID5T1Tzu3xnEQK7m5uTnvO96iB6zrFVn1i+w5YovgBDFMCuFPKQZULR0FSzDreWpqyiCmxkZtdSyWSSpOjd1Of+3qk4hk6FSymH9pZddl57MrA8xKBxs1hDgUYhk9K4uWr6vDz15GR0cxMjJiOsfIyEjo7XKC1UDM2uGX9Fj/i9cZHx83ziv+xnZ+BEqp5XM0NzcnNRrc+kKKWWY6bCgLX8EShLjLJPUKJ83dqzwkIyGvDl9xVSoWJ84KbLFzhWnFOc2ICNEShPg2AFqoIiEEU1NTRXUievHTeLF43chyQD6xs+Uh7drj9jmy8lmIhgPgz89TLghM+ISQ3QCSAHoppV+VfH+QUrqPENJPKT0c9HoKxQEfeueUSer1vG5eGLfykIyEWBKPW71bpk2Hva6tFexmRCxLVSwgxtpWV1dX1PBAq4F4bm7OWC6SJ2cWKePUPitZrq6uzugDtkgNi8tnmn5tba0tofuVGe2MknLwp/hFIMInhPQCAKX0GCEkQQjppZSeEnbr1weFPUGupVA8iKF3opQgyyS1g/jCsTR2N3HQPKzIWiQhNiBNecgHsNPuWSkI2f14gVfdl11bthYuc6QXm2BEAgW06pZTU1MYGhpCfX294RRtbGx0HToq63923tnZWaMQG+uHWCxmlLYWZ0V+niMeTkYJ21Zqf4ofBLXwHwBwVP97CMAOACLhP0gpfSbgdRSKBPFhZy8vkAtn8yJxyCwllsbOw68cAMhJSDzeTamAQpYO9hNHz/pKZuGz+PRSQOxnfoBlse18mKYbqUPW/4BWZoG/f5702UzHrn1+YDXjYDM+oLSVT4MgKOHHAfBFpddI9kkQQnbAWvLpB9APAOvXrw/YHIWgkMkbgDkiwq1+b2cpiYWzRkdHDavVD6GKURle8gHsjgmjdLDfOHpewxctfFZQrBzASJ+fUTktSM7Drv/FRWMymQwAcxXNQkltolHC5L3Z2VnMz89XZFhnwZ22jOQJITsJITsopceE7w8DOAwAfX19lbuUzDKCnbwh/u3mPIC8cFZNTQ1qa2sxPT1tOEwp1Za8cyJUK3nEq8OXtbMQpYOd+sHpPLyGL5JLLBYrGwehlXUOuHtW7Pqf+Qb8nptvoxc5LZvNYmZmxrSNFXOrq6sLHNZZKjgSvm6BixjSiTsJgM2p4gAm+J30Yyd1SWcCQCJYcxWKAacYeC8PtWzwWLVqFQAYVmtDQwOmp6eNz2zFI6vrOMkjfhx1smOYnCMufu7HunYaRK2OKfdaLrx1LmbbAu6lDpksx3wX4jrAXs/tVU7jpTR+dsU+d3Z2mt4Dt47gcoAj4TtE1hwB0Kf/nQBwDAAIIXFKaRLACWjaPgBsAHAo7wwKZYUwSyTw5+ORzWbR2dmJS5cuYWFhIU+jrq+vtz2f27K8PNzOSPjrsEgQcXUmvlyvW8j6YWRkxJS0JLM6y72WCxuUZJo9H8rr1tKXfV5cXJTKWm7O7UdO4wdacQF2vnKnXdvLFYEkHUrpKUJIn67RJ7kInRcAbNO/7yeETAK4IIngUSgzhGlVOg0eXV1dOKevbyseZ9c+t/KIn2xIfsCwipDhnaZuNXyxH4aGhgydmzk9raxOP4NXMcEGpfHxcZOvB8jdk9fnBtAqZQ4NDWF+ft40G2QRO7FYzHG25UdOo5Sa1uTlkc1mLXM5vD5rpUBgDV82A6CUbrP7XqG8EdZiHU7auCwzMR6POyYUuZFH/ETFiMfIZgqJRMIziYn9AGizmPn5eSOqpZKSd2QgxLxYO+/v8YKxsTFcv34dtbW1aG9vR1dXl8nCjkajRpgsI+SxsTFbB78XOY09A+KC63zsv3h8JS10rjJtFaQQXwa/i3XIBg/+ZYpGo0bkBaCVbIjH47aE6uRj8DONlx3DqjGK1/EDsR94q5MltVVK8o4dxOcEsJ65iGC/wdzcnFEBU3Ta8r8Pe4bcOPjdhFGKzwAfIRWLxYyQTH5WQan7BVXKAYrwFRzhN6yQQfwuEomYXiamlbIoiFgsZhTSkrXFjY/B6zTe6hgGdp98uGE2m/Wk4/PX9ePE5fuAP5/4uVQI4znhfwM+zLOxsRGUUiSTSc+RTm59UuL1GfhrsJmFaMS4WVClHKAIX8ERfgjUCcxa4pe5SyQSjmUM3PoY/BKqeIws8qSurs5UcsHPtN2vE1eUPADNWp2dncWqVatMi4cXm2zCeE5kvxtgLufhNYPabT1+JuFZPTe8I59t97qgSqmhCF/BFYJYpFZobW01EZPbRardRK64ncYzMB1WdBjPzc2hs7PTdN+dnZ2u5QQZ/DpxZZIHPxjV1dUhm82CkFzymptaNmEi6HNiFdM/MjIiPY+b0Eyn58XLKl5WA5r43JRr5q0ifAVX8EqgbuE3AsXuOK+hpaIUwVv18/PzGBoaMl2LORH9znD8OnHtJA9AG5yuXLniq5ZNWAjynPC/G4C8ldZmZ2elSWiAO0tf9pn/7Vk/y67PX0Mc0Fh/u33WShnNowhfwRFhx+YXGm6n8fz+bW1thuXMiLSxsRGpVMrI/BVjsvlFuL3CrxPXSvJgyWtswIjH4wZZyWYhhSCeoM8J+93q6upMkhUAo4Aa3ydMFuTXD/Az+Mp0e6tVvGQDmtsFVcohmkcRvoIjvBJosWBHWl4Tlggh6OrqyisDPTY2ZmTb2i2w7Qd+nLhWkgeTeBiSySQA+aBRKOIJ4zlpaWnJW/mKnYMndT58MhKJ+LoHO91etoqX3YBWV1dn6genWWSponkU4Su4QrllfLohLS9ykSzJhkkRLNWelQ/gQwIppSZy8As3UohM8gC0QmWy0gNA/iyk0MQTxnNi97ux3zroPXjR7fl78bugip3+X8z3SBG+gmv41dvDRtikdeXKFczMzOSFiPLnj0ajqK2tNVmErHzA+Ph4IMvYrRRCiBYWyEselFJDdrK6N7vQw0IQT6Gfk6D34Ee3ZwgyoAV1aIcBRfgKFYcwSYuF2rHCWEy6YZ9Zkk1zc3PeIEMIwdzcnLEyUxBpx2klKb6tsVjMWAqSEILVq1djcXER165dM/ZtaGjA4uJiXntZO0tNPEER5B686vay4+0+W6FQgQ9eoAhfoSIRFmmJLz8fgcOvdFVoy1hWLbKmpgbJZNIgBbZ0o2zRD7EA3fz8PFatWmVaBlEsG8DDD/GUMuLEijzF1cms4Fa3D7u9pQ58UISvUJEI01pyO3j4HWTcEiO/bXx8HJFIBI2NjaYBRiwdzeq2sxlJV1cXLl68aAwAXV1diEajJhkjjIXaSxlxwpNnTU2NkbDH7m3VqlVGBI/TOXj4LQHuBuUS+OA+L1xBoUwgWktbtmxBU1MTJicnMTo6alttU3Yuq5dfPI/b/XiMjY2Z9mHnkBWO46/DyFkkArF0dCQSwapVqwzyPnfunEHiq1atQjQaBZAbrJqamvKWCEwkEmhqanJNPHz72L2x30OWvOYFsj4XwXwZbLlDZtmzPrh+/bptG8J8frygpaVF6k8pZoE1ZeErVBzCspbGxsawtLRkOOns6rj7mZL7dS5baczsnCJaW1vR3NxsyhFglj1/nN0MxcvMiBD3C9Hz1+bbz39mf3uZNbS0tCCTyWBqasr4x2C3ngK7ttfnJyz5qtSBD4rwFSoSXqIlZC8rAIMwamtrTcXRGhsbTdo3O7+fpRODRpPwaGxslJaOZmGjPC5evIhEImGKUWeFv3j4kcF4XwA/eMhq0/MkzippUkpRVVWF5uZmUwkIL4MjIcTQ3K0KndnBy/NTDglTYUERvkLFwo21ZPey8mTMMlTFxdp5+AnJs7Kq3UAszUwIQWNjY17RL54Y+aqjQ0NDRv3+qakpU3VSuxmKnTUr+gJ4iCuBOYU/8u3m+8XL4OhGArKCm+enXBKmwoIifIWioBQRHU4vK9vmxQnrdUpOKc2rxTMyMmLMGKzWVB0dHcXc3FweOTc1NZlKR4szj/HxcUPSWFhYMGSe2tparFy50lSdVDZDcbJmmZzjZiUwO2mKLzPN97nb34NSakQtyc7b1tZmitYJIsGUQ8JUWFCEr1BwlGpK7PSyAvYZlkHBSImfPTDZiP8sG0S8yEf8SlNMpmpsbDQRcn19fV4GskwacmPNMkcxf36r0tayGQ4PWSYxD3FhG/7c4qyMtXVmZgZALswy6PPmNzqrHKEIX6GgKPWU2E5SKXRcNCEEVVVVljX17a7hpxYQf29Wzl67GYpba5b9pjwYMYsx8Fa1f8Tj2N/s94hEIpiZmTHaIK4/QAjBypUrTf3Y1qZlP7MCeGxb0OetHBKmwoIifIWCotRTYruXtRhx0bz1zZNwV1eX4zX8RnR4cfbKrmFnzTKJilWIbG9vN6SVubk5JBIJqX9BHPRkJQzY7yHLdpatPyAbFPm1BMJ43solYSosKMJXKDhKNSV287Ky9vFhi4VoVyEsRKvoI5mzt7a2Nq9Mg0zmcGPNOv3PX1f0LzDCZlE6QG6A5QmcNxKYdGRVLlq8JuDdN2MFr/JauYMUKsnAD/r6+uiJEydK3QwFDslkEiMjI4HPk8lkTCGBLHGm0GDSA3+tpaUlUEpRXV1tu1+YbWDr37JF2/nPfs8JmNvLQh4ppXnXYnBqg9u2Fuv3TKfTxt/87+WEUj1vxUB7ezvi8bjxmRByklLa5+ZYZeEr2OLq1avo7Ow01fv2Akop0uk0MpkMotEoqqur8z4HsZLS6bRB3sxST6fTIIQYBCGGFRayPX7b6AV298CcqrJridq77H7dtpUlqDGwSqJhgb9Hu/baHVes37eYmJubw/DwsInwvUARvoIt0uk0amtrfR/PwvP4l40RB/vODk4x4TyJiS8321eUANj1M5mMyVIuFBlUV1fnac1BruV0D2wf8Voi4cva4KatjFR5pNPp0PrPjrSt2s0Q9Hkrd9TW1ub1vReoWjoKjgj6klRXV5teUvYSshcxmUxi586d2LNnD/bt22ccl06nDYsTyBEBe+DZeZj0MD8/b2vJnTp1Cnv27MFLL72E3/qt38Kf//mf49Of/jS++93vSvcfGhrKa5Nf+HXA2p2Pt7i/+93v4tOf/jT6+vrwrne9C3v27MGxY8eMfa1I2qpWjdXnkydP4sEHH8SJEydw99134wtf+AL++I//GIcPH847n9/+syJtppk79Z3T8ybDqVOnQAgxcib27duXlz9hh2eeeQbPPPOM6+1e97nvvvsABH9uFOErBEYymcTg4CAGBgYwODhoLK/Hw45EnnrqKezbtw+HDh3CwYMHAZitd0YkzMpj37HziC+ym2n/HXfcgS9/+cv45je/iZdeegkvvvhiHvklEgns27dPej9h4wcvDePux3+Mrof/AXc//mP84KVh2/1FAv/Upz6Fb37zm7j33nuNvtyxY4dpXzYY1tbWGoOkFeknk0kpUfNk3NfXh69+9av49re/jV//+tf49a9/ber3IP3nlbSfffZZPPvss6Z2iu12Qn9/v/H8WcGqXyoFStJRCIRkMonLly8bpJFOp3H58mUAcK0z9vX14cEHH8QDDzyA/v5+xONxXLx4Efv27UM2m8UnP/lJTE9PAwB2796N973vfdizZw+OHDmCrq4ufPKTn8QjjzyCxsZGfOhDH8KGDRvwta99DYQQ7Nu3D4lEwrgWpdRw2jILsr+/H0899RTuuOOOkmi8P3hpGPu//xvMpTXJYjg5h/3f/w0A4IN3dOTtbyd5ZLNZ47c4deoUjhw5gqGhIfzd3/0dnn32WXzve99DIpFAf38/Dhw4gKmpKdx1113YvXu3QXZswDh27BieeeYZ7N6923T9SCSCqqoqExk/9NBDeOqpp3DnnXeG1i9hz4qcsGHDBly4cMFk2Q8NDRkEv2fPHhw9etSyXwBznz/99NMAgCNHjuDo0aOIx+M4ePAghoaGTH3NX4vfnkwm8eCDDxoDdxhQhK8QCGNjY9J6JmNjY64Jv7e3FydPnsQzzzyDe++9FydPnsS+ffvw7W9/Gw0NDdixYwc+9alPATBHanR1deHLX/4y9u/fj8ceewybNm1COp3GQw89hMbGRkQiEZw6dcpE+MxC5bVpRl6l0nifeP68QfYMc+kMnnj+vEH4TFfn/RIynRrIEWNvby96e3tx+PBhPPvss4hGo0gkEjh48CAOHz6Mhx56CC+88IJB9uz3YtIXACmp8dew+lwsMKueGRns8+/8zu/4Ot++fftMfcGew3g8jp07d+LQoUMArPuF73Mm0+zcuRP9/f3YuXMnAOT1NYO4/ejRo3jhhReMa4cBRfgKgWDlQPLiWEomk4jH49i9ezeOHj1qWFjMkuXjqfnz3nnnnSCEYHp62kR8hBA8+OCD2LRpk/R6VVVVpsqOTz31FHbt2pUXhWLlLHYLt+e4nJyTHs+2s35gxzNpQ4ygYTo3w6lTp3Ds2DH86le/ws6dO9HU1ITt27cD0GLaDx8+jG3bthkD4p49e4y/vejXgGbFhkVKpUQikbAsA2G1nYesz/lzM/B9zev3/PajR49icnLSd0SODIrwFQKByQmy7W5x7NgxHDlyBMlkEr29vUgkEnj88ccNK2rfvn3Yvn07+vv7cfHiRUO2YES3f/9+7N27F/F4HA888IDxube3Fzt37pROidksIplMYtu2bSayYuSaSqVw8OBBnDhxAkeOHMGHP/xh1/flJRRzXbwOwxLSb2+oNck3hBAjttwqIonHiRMncOHCBcs2soXamda+Z88eU5+dOnUKhw8fRn9/v/T4EydOmPpQ7OdkMmn0n5UEEhTMkg9q2fM4ePAgNmzYYFj7zGG6f/9+JBIJ236R9fnRo0dx8uRJbNiwAQDy+ppB3L5nzx7cd999oUo6KvFKwRZnz57F5s2bLb8XNXxAm96vW7cusGViR5q8hgyEV30zjDhur+cQNXwAqK2O4EsfuA0f2KpldUYiEaxYscJXbLoM9913n0mqOHr0qKfjyw1hEn65Q3wni554RQjppZSesvhuN4AkgF5K6VfDuJ5C+YCR+tjYmBGL3dLSEso01ComfGlpyRT3HTSRiUcYcfpez8F0+ieeP4fLyXm0N9Tgf9mxEe/raTGdE9D6xCmW3g327NmDAwcOAMCykGJuBKL//9s7g922kSQMf5WFkrlFsLOHYA4byKccR7Ix113AAYKc5mDHDxBAwryAPQmMBQIEcDIvkLX2BWLYD5CDZvdsTKJHELLnbLycm3PqPYitUDTFpkRK3ZLqAwxYJKUuNVs/i82q6iooLfgisgucAlsZ+5oAxpieiDTyLgzK8lKv1yudZ0ySJWZFn4CuYwAAB31JREFUkq3KtukSVtf8fJHPSPLTD9/z0w/fZ2aYJqkq4Wl3d7fSqQJlOSgdh2+M6QGTnvAcMPTuiY/REaaUYtpkq1lwJSm5EsKKfMY02O/69evXqWLpFSXNvB/a1oHko+3NObenrAHTes/TUCSt33WHAcxcGgC4se4sMPrsZJ2cVSoZoCwG75m2ItIWkQ8i8uHz58++zVFmICsOf97tVeU9pymS1u+6w5ipNECcPWy/x59u3Rrz4gFu3749Mfu02+3S6XRGEUfJ0gpVYmP0+/0+rVZrFFnS7XZvHDsYDNjf3+fRo0dj8eaKP5wevohkxWQN4qkcFxFgA1HrwJf0AcaYLtCFYZROgc9UAqKK5QujKGJ/f59GozHKRpxEOkzxzp07Y1mmyQJiafr9Pqenp3Q6nVEGow0pTIbYWS/eZvtGUcTr169ptVpAsTuMqQqm/fsErv9AHp8MLxS3blH719+R7+rU/vrL6P1Z77XbrP1HR0cTQ1GnIYoiTk5Ocs/F9vb2aL+9CDSbzdH+Xq/H+fn5KGPUZp4q/nAKfizIUyEidWNMBJwBNlyoAVTvcijesFMbZZcvtLV0iohU0oO24l+r1Uax+fbP1a5LrERkomAVrRZZKBvVGLj+Ay7fAlB7fIJ5/wty+Q/48WeE2aer0mn+FxcXnJ2d0Wg06HQ6vHnzhqurK3Z2dqYqrZCFLXWR7MPkRTSZgKT4o4oonT1gW0T2jDE2Zew3oGWM6YvIdhzJE2mEzmohUs3yhVm1dNI1TGwBrr29PZ48eUK73ebdu3c8ePCAZ8+ecXx8zMbGBgcHB2xtbY2JVzLDMYsssYJswSpTujcTEXg8DI/k8i1cvkUAfvx5uF2EWWfns9L8k6UV7LTPLKUVpsEmMCn+KS34schfpLa1Ev9PfYegLA9W9MssJ5dXS8cmBlkBSra7tbXFy5cvOT4+5tWrVzx8+BARodPpjImXS/BdJAUrr47NzA9PrejHXj4wEvsyuEornJ6ezr20Qro2jeIXLa2glMLO2SeZdr3WSbV0LFk1TIwxI4/cev92WgXGxctFXh2YLMGqekETjIH3z8e3vX9eWvR9l1Y4Ojqi1+sxGAxGdxaKX1TwlZmxYp+3SHgREcyqpZOuYdJsNul0OqOLQfIh7YsXL2i329y9e5enT59yeHh4Q7zSuMQK8gWrsmqRVuwv336bxrGvYWrRT9o4SahheJE7Pz8fK62QLq+QVW6h2WyOKkZ+/PixsC1KGGgtHSUXVy2dKqJ0ZqHqdWK9EkfpjMTdXgS+uwt/e+5+/wz0er2RoG9ubnJ4eDiXdpTqKVNLRwVfycUl+FBNKeFZ8NXuXDBm3JNPv1aUmDKC7z3xSgkfl1NQ2fTGlPhqdy6kbV/m76LMjbIOugq+kkutVuP6+tq3GYqiANfX16WmLPWhrZLLvXv3+PTpk28zFEWJuX///szvVcFXcpln6WNFURaLTukoiqKsCSr4iqIoa0JQYZki8hn4z4xvvwf8t0JzqiZ0+0BtrILQ7YPwbQzdPgjLxr8YY/5c5MCgBL8MIvKhaCyqD0K3D9TGKgjdPgjfxtDtg+WwMQud0lEURVkTVPAVRVHWhFUS/NDLMIduH6iNVRC6fRC+jaHbB8th4w1WZg5fURZNvPhPBDSNMb/mHHeYt18JHxFpTlrAqeg4CIGV8PBFZE9EdkUkt+Sfa/864eqzon06LwrY147/vNTgFZEmQLy2c2RfZxy3C2QX258zBfqwGR9TflmrGZliHE6u9Txn4nOYuSBv0XEQCksv+Cvyw1uoeLn6zPcgLmDfLtCLV1NrxK8XzQFDrw5gAPiwYSIFz+HzeMW6hg+hKjgOB/H+gS8xte1P2B30OEiz9IJP4B0eqHi5+sx3n7rabyS2DeLXi6YOJJfi2kwfEE8D9BZn0hi5fRh79b8DGGN+9bTedJFxZp2gRqBrYjvHQUisguAv9Q8PP+Ll6jPfgzi3fWNMN7FWchMIdRGFDY9tu87hDrAZT+v4mup0nec+Q8/+f6njlBlZBcEvQrA/vCUSr+CI75b6njy/iG/jqg58Se707GQU5YvtO5/z+JMQkTrDfj4B/ikiPu7kXOSOg9BYimqZEx7Y2Lm9VfjhLVq8XIPU9yAu2v6uMeZoMSbd4AywmZYNoAdDkTLGRAyn5xoMv8dGXpTHnHD14Re+zUtHDD3+i8WYNsJlYxs4McZEIjIA9oAgomAS5zlzHITKUgh+wgPOwvsPr8wFKcEixcvVZ74Hscs+RKRtQ+BEZHfRF3VjTF9EtuNnLlFiTP0GtOKHoXZs+Kgv7erDC4YCCkP7fl+4hQXOs8UYc+ErUie++9kWkT17Xvl2nieNgyBZiTj8eCAMGD7Y6cbbPhpjWqljjoD9RZ6U2HPfNsZ047nSXjxI0uJl7V6IeLn6LGv/IsmzLxEmd8XwYrq/DHdxi6bgOb4CdnzdKRWw8TDev+FjHK4aKyH4oaPipShKCKjgK4qirAnrEqWjKIqy9qjgK4qirAkq+IqiKGuCCr6iKMqaoIKvKIqyJqjgK4qirAkq+IqiKGvC/wGpIm2UasgRyAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2722caa8240>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from reid.rerank import re_ranking\n",
    "from sklearn.cluster import DBSCAN\n",
    "plt.rc('text', usetex=True)\n",
    "\n",
    "source_features = np.concatenate([positive_data,negative_data])\n",
    "target_features = np.concatenate([tgt_positive_data,tgt_negative_data])\n",
    "rerank_dist = re_ranking(\n",
    "    source_features, target_features, \n",
    "    lambda_value=0, # no d_w\n",
    ") \n",
    "\n",
    "tri_mat = np.triu(rerank_dist, 1) # tri_mat.dim=2\n",
    "tri_mat = tri_mat[np.nonzero(tri_mat)] # tri_mat.dim=1\n",
    "tri_mat = np.sort(tri_mat,axis=None)\n",
    "top_num = np.round(0.6*tri_mat.size).astype(int)\n",
    "eps = tri_mat[:top_num].mean()\n",
    "cluster = DBSCAN(eps=eps, min_samples=4, metric='precomputed', n_jobs=8)\n",
    "labels = cluster.fit_predict(rerank_dist)\n",
    "\n",
    "if np.max(labels) > 1:\n",
    "    raise(RuntimeError(\"More than 2 clusters\"))\n",
    "pseudo_positive = target_features[labels == 0,:]\n",
    "pseudo_negative = target_features[labels == 1,:]\n",
    "pseudo_no_labeled = target_features[labels == -1,:]\n",
    "\n",
    "positive_plt = plt.scatter(positive_data[:,0],positive_data[:,1],\n",
    "                           color='#d4d4d4',marker='o',linestyle='None')\n",
    "negative_plt = plt.scatter(negative_data[:,0],negative_data[:,1],\n",
    "                           color='#d4d4d4',marker='x',linestyle='None')\n",
    "pseudo_positive = plt.scatter(pseudo_positive[:,0],pseudo_positive[:,1],marker='o')\n",
    "pseudo_negative = plt.scatter(pseudo_negative[:,0],pseudo_negative[:,1],marker='x')\n",
    "pseudo_no_labeled = plt.scatter(pseudo_no_labeled[:,0],pseudo_no_labeled[:,1],\n",
    "                                color='#969696', marker='+')\n",
    "\n",
    "x_line = np.asarray(range(16))/10-0.4\n",
    "y_line = x_line * classifier_weight\n",
    "plt.plot(x_line,y_line,'g-')\n",
    "\n",
    "plt.legend(\n",
    "    (positive_plt, negative_plt, pseudo_positive, pseudo_negative, pseudo_no_labeled),\n",
    "    ('Source ID 1', 'Source ID 2', 'Target ID 1', 'Target ID 2', 'Not labeled'),\n",
    "    loc='lower right',\n",
    "    ncol=3,\n",
    "    fontsize=8,\n",
    ")\n",
    "title = plt.title(r'Pseudo labels of target data w/o $d_{W}$ ($\\lambda=0, \\rho=0.6$)')\n",
    "# axis_range = plt.axis('off')\n",
    "# plt.savefig('no_dw.pdf',format='pdf')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Computing source distance...\n",
      "Computing original distance...\n",
      "Starting re_ranking...\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2722cb0aef0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "rerank_dist = re_ranking(\n",
    "    source_features, target_features, \n",
    "    lambda_value=0.5, # with d_w\n",
    ") \n",
    "\n",
    "tri_mat = np.triu(rerank_dist, 1) # tri_mat.dim=2\n",
    "tri_mat = tri_mat[np.nonzero(tri_mat)] # tri_mat.dim=1\n",
    "tri_mat = np.sort(tri_mat,axis=None)\n",
    "top_num = np.round(0.6*tri_mat.size).astype(int)\n",
    "eps = tri_mat[:top_num].mean()\n",
    "cluster = DBSCAN(eps=eps, min_samples=4, metric='precomputed', n_jobs=8)\n",
    "labels = cluster.fit_predict(rerank_dist)\n",
    "\n",
    "if np.max(labels) > 1:\n",
    "    raise(RuntimeError(\"More than 2 clusters\"))\n",
    "pseudo_positive = target_features[labels == 0,:]\n",
    "pseudo_negative = target_features[labels == 1,:]\n",
    "pseudo_no_labeled = target_features[labels == -1,:]\n",
    "\n",
    "positive_plt = plt.scatter(positive_data[:,0],positive_data[:,1],\n",
    "                           color='#d4d4d4',marker='o',linestyle='None')\n",
    "negative_plt = plt.scatter(negative_data[:,0],negative_data[:,1],\n",
    "                           color='#d4d4d4',marker='x',linestyle='None')\n",
    "pseudo_positive = plt.scatter(pseudo_positive[:,0],pseudo_positive[:,1],marker='o')\n",
    "pseudo_negative = plt.scatter(pseudo_negative[:,0],pseudo_negative[:,1],marker='x')\n",
    "pseudo_no_labeled = plt.scatter(pseudo_no_labeled[:,0],pseudo_no_labeled[:,1],\n",
    "                                color='#969696', marker='+')\n",
    "\n",
    "x_line = np.asarray(range(16))/10-0.4\n",
    "y_line = x_line * classifier_weight\n",
    "plt.plot(x_line,y_line,'g-')\n",
    "\n",
    "plt.legend(\n",
    "    (positive_plt, negative_plt, pseudo_positive, pseudo_negative, pseudo_no_labeled),\n",
    "    ('Source ID 1', 'Source ID 2', 'Target ID 1', 'Target ID 2', 'Not labeled'),\n",
    "    loc='lower right',\n",
    "    ncol=3,\n",
    "    fontsize=8,\n",
    ")\n",
    "title = plt.title(r'Pseudo labels of target data with $d_W$ ($\\lambda=0.5, \\rho=0.6$)')\n",
    "# axis_range = plt.axis('off')\n",
    "# plt.savefig('with_dw.pdf',format='pdf')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
